/*******************************************************************************
 * Copyright 2011-2012 Dik Grapendaal
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package sh.grapendaal.tsuushin.service;

import org.jboss.netty.bootstrap.ClientBootstrap;

import sh.grapendaal.tsuushin.core.Network;

public interface NetworkService extends Service {
	void start();
	
	void stop();
	
	/**
	 * Add a server to the Network Service with the given address under the
	 * given network name. It will use the default port, 6667.
	 * 
	 * @param networkName
	 *            The network name to store the address under.
	 * @param serverAddress
	 *            The actual address to the server.
	 */
	void addServer(String networkName, String serverAddress);

	/**
	 * Add a server to the Network Service with the given address and port under
	 * the given network name.
	 * 
	 * @param networkName
	 *            The network name to store the address under.
	 * @param serverAddress
	 *            The actual address to the server.
	 * @param port
	 *            The port number on which the IRC daemon is running.
	 */
	void addServer(String networkName, String serverAddress, int port);

	/**
	 * Get the Network object for the given network by its name.
	 * 
	 * @param networkName
	 *            The name of the network we're looking for.
	 * @return The network with all of its properties.
	 */
	Network getNetwork(String networkName);

	ClientBootstrap createBootstrap();
}
